package com.gupaoedu.vip.pattern.singleton.seriable;

import java.io.Serializable;

/** Created by Tom. */

// 反序列化时导致单例破坏
public class SerialSingleton implements Serializable {

  // 序列化就是说把内存中的状态通过转换成字节码的形式
  // 从而转换一个IO流，写入到其他地方(可以是磁盘、网络IO)
  // 内存中状态给永久保存下来了

  // 反序列化
  // 讲已经持久化的字节码内容，转换为IO流
  // 通过IO流的读取，进而将读取的内容转换为Java对象
  // 在转换过程中会重新创建对象new

  public static final SerialSingleton INSTANCE = new SerialSingleton();

  private SerialSingleton() {}

  public static SerialSingleton getInstance() {
    return INSTANCE;
  }

  private Object readResolve() {
    return INSTANCE;
  }
}
